home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 10
/
FM Towns Free Software Collection 10.iso
/
tos_updt
/
fmcity
/
palcom
/
auto
/
script
/
flistcom.mx
< prev
next >
Wrap
Text File
|
1995-02-10
|
4KB
|
146 lines
//--------------------------------------------------------------------------//
// PALCOM V2.1 L10 //
// 自動通信:フォーラム一覧取得スクリプト //
// //
// CopyRight(C) 1994/10/20 //
// FUJITSU PERSONAL COMPUTER SYSTEMS LIMITED //
// written by C-cube Soft T.Nakamura //
//--------------------------------------------------------------------------//
event @OPEN.EXTERN {
$AUTO.WAIT15 = AUTO.getWaitChar( 15 );
$AUTO.WAIT60 = AUTO.getWaitChar( 30 );
$trdId = #FALSE;
sys.global( $trdId );
//--- フォーラム一覧に入り、トップメニューを取得する ---//
sys.stopIntRec();
loop {
AUTO.putStr("GO FLIST\r");
$errFlg = 1;
comtable( $a, 300 ) {
interval { AUTO.haltCheck(); }
"GO FLIST\n" { $errFlg = 0; exit; }
}
if( $errFlg == 0 ) {
exit;
}
AUTO.putStr("\r");
AUTO.waitPrompt( #TRUE );
continue;
}
$tmpList = [];
$inFlg = 0;
comtable( $a, 1200 ) {
interval { AUTO.haltCheck(); }
$AUTO.WAIT60 { AUTO.putStr("\r"); }
"FLIST\n" { $inFlg = 1; }
">\w\w" { exit; }
"%b%d. " {
$str = str.replaceAll( com.getString( 0, #TRUE, #TRUE ), "\n", "");
$str = str.join([$a, $str], "" );
list.putLast( $tmpList, $str );
}
}
if( $inFlg == 0 ) {
//--- フォーラム一覧に入れなかった ---//
$errMsg = ["フォーラム一覧に入ることが出来ませんでした。",
"フォーラム一覧の取得を中断しました。"];
AUTO.error("フォーラム一覧の取得", $errMsg );
return;
}
if( list.size( $tmpList ) == 0 ) {
//--- メニューが無い ---//
return;
}
//--- TRD の初期化 ---//
$trdId = trd.init( 500 * 20, -1 );
//--- トップメニューを一つずつに分解し、TRD ファイルに格納する ---//
$clm = str.match( list.get1st( $tmpList ), " 2. ", 0 );
$titleList = [];
$noList = [];
$i = 0;
foreach( $a, $tmpList ) {
if( str.length( $a ) < $clm + 1 ) {
$list = [$a];
} else {
$list = [str.left($a,$clm),str.right($a,str.length($a)-$clm)];
}
foreach( $b, $list ) {
$i = $i + 1;
trd.setData( $trdId, [$i, -2],
str.replaceAll( str.mid( $b,4,str.length($b)-4 ), " ", "" ));
}
}
//--- 続いて項目毎の一覧を取得する ---//
AUTO.sendCommand("SET MENU OFF");
$j = 1;
loop {
$cmd = str.join([data.toString( $j ), "\r"], "" );
AUTO.putStr2( $cmd );
$strList = [];
comtable( $a, 0 ) {
interval { AUTO.haltCheck(); }
$AUTO.WAIT60 { AUTO.putStr("\r"); }
"more>\w\w" { AUTO.putStr("\r"); }
">\w\w" { exit; }
"%2b%d " {
list.putLast( $strList, com.getString( 0, #TRUE, #TRUE ));
}
}
//--- フォーラムタイトルと GO コマンド名を取り出し ---//
//--- TRD ファイルに出力する ---//
$no = 1;
foreach( $str, $strList ) {
$str = str.replaceAll( $str, " ", " " );
$cmdTop = str.matchRev( $str, "(", 0 ) + 1;
$cmdLen = str.match( $str, " ", $cmdTop );
if( $cmdLen == -1 ) {
$cmdLen = str.match( $str, ")", $cmdTop );
}
$cmdLen = $cmdLen - $cmdTop;
$goCmd = str.mid( $str, $cmdTop, $cmdLen );
$title = str.left( $str, $cmdTop - 2 );
$title = str.join( str.split( $title, " " ), " " );
trd.setData( $trdId,[$j,$no],str.join([$title,$goCmd],"\t" ));
$no = $no + 1;
}
//--- 全ての項目を廻った? ---//
if( $j == $i ) {
exit;
}
$j = $j + 1;
AUTO.sendCommand("E");
}
//--- TRD ファイルを出力する ---//
$path = str.join([$$DIR.STANDARD, "PUBLIC\\FRMLIST.TRD"], "" );
if( file.exist( $path ) == #TRUE ) {
//--- 既存のフォーラム一覧ファイルは削除する ---//
file.delete( $path );
}
trd.save( $trdId, $path );
//--- 後始末 ---//
trd.end( $trdId );
$trdId = #FALSE;
return;
}
event @CLOSE.EXTERN {
if( $trdId != #FALSE ) {
trd.end( $trdId );
}
sys.local( $trdId );
sys.startIntRec();
return;
}
event @ERROR {
sys.startIntRec();
AUTO.fatalError();
event.mainLoop();
}